\contentsline {chapter}{Abbildungsverzeichnis}{ix}{chapter*.5}
\contentsline {chapter}{Tabellenverzeichnis}{xi}{chapter*.6}
\contentsline {chapter}{\numberline {1}Hinf\"uhrung zum Thema}{1}{chapter.1}
\contentsline {section}{\numberline {1.1}Unterschiede zwischen EEPROM und Flash-Speicher}{1}{section.1.1}
\contentsline {section}{\numberline {1.2}Zielsetzung}{1}{section.1.2}
\contentsline {chapter}{\numberline {2}Projektanalyse}{3}{chapter.2}
\contentsline {section}{\numberline {2.1}Anforderungen}{3}{section.2.1}
\contentsline {section}{\numberline {2.2}Projektorganisation}{3}{section.2.2}
\contentsline {subsection}{\numberline {2.2.1}Vorgehensmodell}{3}{subsection.2.2.1}
\contentsline {subsection}{\numberline {2.2.2}Verwendete Tools}{4}{subsection.2.2.2}
\contentsline {subsubsection}{\numberline {2.2.2.1}Entwicklungsumgebung}{4}{subsubsection.2.2.2.1}
\contentsline {subsubsection}{\numberline {2.2.2.2}Versionsverwaltung}{4}{subsubsection.2.2.2.2}
\contentsline {subsection}{\numberline {2.2.3}Verwendete Hardware}{4}{subsection.2.2.3}
\contentsline {subsubsection}{\numberline {2.2.3.1}Infineon XMC4500 Relax Kit}{4}{subsubsection.2.2.3.1}
\contentsline {paragraph}{MCU XMC4500:}{5}{section*.7}
\contentsline {subsubsection}{\numberline {2.2.3.2}Externer SPI-Flash-Speicher}{5}{subsubsection.2.2.3.2}
\contentsline {paragraph}{Spansion S25FL032P}{6}{section*.8}
\contentsline {paragraph}{Micron N25Q032A}{6}{section*.9}
\contentsline {paragraph}{\"Ubersicht \"uber die SPI-Kommandos}{6}{section*.10}
\contentsline {chapter}{\numberline {3}Entwurf und Design}{9}{chapter.3}
\contentsline {section}{\numberline {3.1}Vorhandene Bibliotheken}{9}{section.3.1}
\contentsline {subsection}{\numberline {3.1.1}SPI}{9}{subsection.3.1.1}
\contentsline {subsection}{\numberline {3.1.2}Flash-spezifische Bibliotheken}{9}{subsection.3.1.2}
\contentsline {section}{\numberline {3.2}Flash Translation Layer}{11}{section.3.2}
\contentsline {subsection}{\numberline {3.2.1}Adresszuordnung}{11}{subsection.3.2.1}
\contentsline {paragraph}{Einfache Zuordnungstabelle}{11}{section*.11}
\contentsline {paragraph}{Zweistufige Adressumsetzung}{11}{section*.12}
\contentsline {subsection}{\numberline {3.2.2}Garbage Collector}{12}{subsection.3.2.2}
\contentsline {paragraph}{Ausf\"uhrung w\"ahrend eines Schreibvorgangs}{12}{section*.14}
\contentsline {paragraph}{Ausf\"uhrung im Hintergrund}{13}{section*.15}
\contentsline {subsection}{\numberline {3.2.3}Wear Leveling}{13}{subsection.3.2.3}
\contentsline {paragraph}{Dynamisches Wear Leveling}{13}{section*.16}
\contentsline {paragraph}{Statisches Wear Leveling}{13}{section*.17}
\contentsline {subsection}{\numberline {3.2.4}Sicherstellen der Datenkonsistenz}{13}{subsection.3.2.4}
\contentsline {paragraph}{Unterbrechen beim Schreiben in Datensektoren}{14}{section*.19}
\contentsline {paragraph}{Unterbrechen beim Schreiben in Ersatzsektoren}{15}{section*.20}
\contentsline {paragraph}{Unterbrechen beim Merge-Vorgang}{15}{section*.21}
\contentsline {chapter}{\numberline {4}Implementierung}{17}{chapter.4}
\contentsline {section}{\numberline {4.1}Design der API}{17}{section.4.1}
\contentsline {subsection}{\numberline {4.1.1}Aufbau des logischen Sektors}{17}{subsection.4.1.1}
\contentsline {subsection}{\numberline {4.1.2}Initialisierung}{17}{subsection.4.1.2}
\contentsline {subsection}{\numberline {4.1.3}Leseoperationen einer Page an virtueller Adresse}{18}{subsection.4.1.3}
\contentsline {paragraph}{Daten im Originalsektor noch aktuell}{19}{section*.22}
\contentsline {paragraph}{Daten im Originalsektor bereits aktualisiert worden}{20}{section*.23}
\contentsline {subsection}{\numberline {4.1.4}Freien Sektor ermitteln}{22}{subsection.4.1.4}
\contentsline {subsection}{\numberline {4.1.5}Schreiboperationen einer Page an virtuelle Adressen}{22}{subsection.4.1.5}
\contentsline {paragraph}{Schreiben in einen neuen Datensektor}{22}{section*.24}
\contentsline {paragraph}{Schreiben in einen vorhandenen Datensektor}{22}{section*.25}
\contentsline {paragraph}{Schreiben in einen neuen Ersatzsektor}{23}{section*.26}
\contentsline {paragraph}{Schreiben in einen vorhandenen Ersatzsektor}{23}{section*.27}
\contentsline {paragraph}{Schreiben mit gleichzeitigem Zusammenf\"uhren von Daten- und Ersatzsektor}{23}{section*.28}
\contentsline {subsection}{\numberline {4.1.6}Merge-Vorgang}{23}{subsection.4.1.6}
\contentsline {subsection}{\numberline {4.1.7}Wear Leveling}{25}{subsection.4.1.7}
\contentsline {subsection}{\numberline {4.1.8}Garbage Collector}{25}{subsection.4.1.8}
\contentsline {subsection}{\numberline {4.1.9}L\"oschvorgang}{25}{subsection.4.1.9}
\contentsline {subsection}{\numberline {4.1.10}Operationen mit beliebiger Adresse und beliebiger L\"ange}{25}{subsection.4.1.10}
\contentsline {paragraph}{Schreiben}{25}{section*.29}
\contentsline {paragraph}{Lesen}{26}{section*.30}
\contentsline {subsection}{\numberline {4.1.11}Header Cache}{26}{subsection.4.1.11}
\contentsline {subsection}{\numberline {4.1.12}Ermittlung des Status}{26}{subsection.4.1.12}
\contentsline {section}{\numberline {4.2}Konfiguration}{27}{section.4.2}
\contentsline {section}{\numberline {4.3}Anwendungsbeispiel}{27}{section.4.3}
\contentsline {section}{\numberline {4.4}Tests}{29}{section.4.4}
\contentsline {section}{\numberline {4.5}Ben\"otigte Ressourcen}{31}{section.4.5}
\contentsline {section}{\numberline {4.6}Fehlercodes}{33}{section.4.6}
\contentsline {chapter}{\numberline {5}Benchmarks}{35}{chapter.5}
\contentsline {section}{\numberline {5.1}Schreibvorg\"ange}{35}{section.5.1}
\contentsline {section}{\numberline {5.2}Lesevorg\"ange}{35}{section.5.2}
\contentsline {section}{\numberline {5.3}L\"oschvorg\"ange}{35}{section.5.3}
\contentsline {chapter}{\numberline {6}Zusammenfassung}{39}{chapter.6}
\contentsline {chapter}{\numberline {A}Programmablaufpl\"ane}{41}{appendix.A}
\contentsline {chapter}{Literaturverzeichnis}{49}{appendix*.31}
